package com.zryc.shop.pms.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zryc.shop.pms.entity.Product;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * <p>
 * 商品信息 服务类
 * </p>
 *
 * @author zhaozhao
 * @since 2024-01-18
 */
public interface IProductService extends IService<Product> {


    /**
     * 分页查询商品列表
     *
     * @param keyword
     * @param pageNum
     * @param pageSize
     * @param publishStatus
     * @param verifyStatus
     * @param productSn
     * @param brandId
     * @param productCategoryId
     * @return
     */
    Page<Product> list(String keyword, Integer pageNum, Integer pageSize, Integer publishStatus, Integer verifyStatus, String productSn, Long brandId, Long productCategoryId) throws InterruptedException;

    /**
     * 更新上架商品状态
     *
     * @param ids
     * @param publishStatus
     * @return
     */
    Object updatePublishStatus(String ids, Integer publishStatus);

    /**
     * 更新商品是否新品状态
     *
     * @param ids
     * @param newStatus
     * @return
     */
    Object updateNewStatus(String ids, Integer newStatus);

    /**
     * 更新商品是否推荐状态
     *
     * @param ids
     * @param recommendStatus
     * @return
     */
    Object updateRecommendStatus(String ids, Integer recommendStatus);

    /**
     * 更新当前商品信息
     *
     * @param id
     * @param product
     * @return
     */
    Object updateProduct(Long id, Product product);

    /**
     * 修改删除状态
     *
     * @param ids
     * @param deleteStatus
     * @return
     */
    Object updateDeleteStatus(String ids, Integer deleteStatus);

    /**
     * 查询商品简略信息列表
     *
     * @param keyword
     * @return
     */
    Object simpleList(String keyword);

    /**
     * 新增商品
     *
     * @param product
     * @return
     */
    Object create(Product product);

    /**
     * 获取当前商品信息
     *
     * @param id
     * @return
     */
    Object selectProductById(Long id);

    Object receive(Long productId, Integer productCount);

    Object skuStock(Long productId, Integer productCount);
}
